.btn-mktg {
  position: relative;
  z-index: 1;
  display: inline-block;
  // stylelint-disable-next-line primer/spacing
  padding: 0.9rem 1.5rem 1.1rem;
  // stylelint-disable-next-line primer/typography
  font-size: 1rem;
  // stylelint-disable-next-line primer/typography
  font-weight: $font-weight-bold;
  // stylelint-disable-next-line primer/typography
  line-height: 1;
  // stylelint-disable-next-line primer/colors
  color: var(--bgColor-default, var(--color-canvas-default));
  text-align: center;
  white-space: nowrap;
  vertical-align: middle;
  user-select: none;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0) 100%), // stylelint-disable-line primer/colors
    var(--color-mktg-btn-bg) !important;
  border: 0;
  // stylelint-disable-next-line primer/borders
  border-radius: 0.375rem;
  transition: box-shadow 0.2s, outline 0.2s ease;
  appearance: none !important;

  &::before {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: -1;
    content: '';
    // stylelint-disable-next-line primer/colors
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0) 100%) !important;
    border-radius: inherit;
    opacity: 0;
    opacity: 0;
    transition: opacity 0.2s;
    background-blend-mode: normal;
  }

  &:hover {
    text-decoration: none;
    // stylelint-disable-next-line primer/box-shadow
    box-shadow: var(--color-mktg-btn-shadow-hover) !important;
  }

  &:hover,
  &:focus,
  &:focus-visible,
  &.focus {
    &::before {
      opacity: 1;
    }
  }

  // fallback :focus state
  &:focus {
    @include focusOutline(2px, var(--focus-outlineColor, var(--color-accent-fg)));

    // remove fallback :focus if :focus-visible is supported
    &:not(:focus-visible) {
      outline: solid 1px transparent;
      box-shadow: none;
    }
  }

  // default focus state
  &:focus-visible {
    @include focusOutline(2px, var(--focus-outlineColor, var(--color-accent-fg)));
  }

  &:active {
    &::before {
      opacity: 0.5 !important;
    }
  }

  &.disabled,
  &[disabled] {
    pointer-events: none;
    cursor: default;
    opacity: 0.5;
  }
}

.btn-muted-mktg {
  color: var(--fgColor-default, var(--color-fg-default)) !important;
  background: none !important;
  // stylelint-disable-next-line primer/box-shadow
  box-shadow: var(--color-mktg-btn-shadow-outline);

  &::before {
    display: none;
  }

  &:hover {
    // stylelint-disable-next-line primer/box-shadow
    box-shadow: var(--color-mktg-btn-shadow-hover-muted) !important;
  }

  &:active {
    // stylelint-disable-next-line primer/box-shadow
    box-shadow: var(--fgColor-default, var(--color-fg-default)) 0 0 0 3px inset !important;
  }

  &:disabled {
    // stylelint-disable-next-line primer/box-shadow
    box-shadow: var(--fgColor-muted, var(--color-fg-subtle)) 0 0 0 1px inset !important;
  }
}

.btn-subtle-mktg {
  color: var(--fgColor-default, var(--color-fg-default)) !important;
  background: none !important;
  box-shadow: none !important;

  &::before {
    background: none !important;
  }

  &:hover {
    // stylelint-disable-next-line primer/box-shadow
    box-shadow: var(--color-mktg-btn-shadow-hover-muted) !important;
  }
}

.btn-signup-mktg {
  // stylelint-disable-next-line primer/colors
  color: #fff;
  // stylelint-disable-next-line primer/colors
  background: linear-gradient(180deg, rgba(52, 183, 89, 0.15) 0%, rgba(46, 164, 79, 0) 100%), rgb(46, 164, 79) !important;

  &::before {
    // stylelint-disable-next-line primer/colors
    background: linear-gradient(180deg, rgba(52, 183, 89, 0.15) 0%, rgba(46, 164, 79, 0) 100%) !important;
  }

  // fallback :focus state
  &:focus {
    @include focusOutline(2px, var(--focus-outlineColor, var(--color-accent-fg)));

    // remove fallback :focus if :focus-visible is supported
    &:not(:focus-visible) {
      outline: solid 1px transparent;
      box-shadow: none;
    }
  }

  // default focus state
  &:focus-visible {
    @include focusOutline(2px, var(--focus-outlineColor, var(--color-accent-fg)));
  }
}

// Size modifiers

.btn-small-mktg {
  // stylelint-disable-next-line primer/spacing
  padding: 0.625rem 1rem 0.8125rem;
}

.btn-large-mktg {
  // stylelint-disable-next-line primer/spacing
  padding: 16px 30px 20px !important;
  // stylelint-disable-next-line primer/typography
  font-size: 1.25rem;
}
